Darstellung der zusammenfassenden Statistik
Humboldt-Universität zu Berlin
2023-06-20
Letzte Woche haben wir…
summarise() von dplyr benutzt ✅.by =) Gruppen erstellt ✅Wofür sind diese Gleichungen gedacht?
Wofür steht jedes Symbol?
Lösen wir für \(\mu\) und \(\sigma\), wenn \(x\) gleich ist:
\[\begin{align} \mu &= \frac{\sum{x}} {N} \\ \\ \sigma &= \frac{\sum{(x_i - \mu)}} {N-1} \end{align}\]
Diese Woche werden wir lernen, wie man…
facet_wrap() darstelltSection 2.5 (Visualising relationsips) in Wickham et al. (o. J.)
Ch. 4 (Representing summary statistics) in Nordmann et al. (2022)
Abbildung 1: Different plots types to visualise distribution of raw data: histogram (A), density plot (B), scatterplot (C), stacked barplot (D), and dodged barplot (E)
Gespiegelte Dichtekurve
Was bedeutet “gespiegeltes” Dichteplot? Geigenplots sind buchstäblich nur ein doppelseitiger Dichteplot. Vergleichen Sie Abbildung 3 mit Abbildung 4. Sie zeigen dieselben Daten und dieselbe Verteilung, aber die Geigen-Darstellung ist einfach eine beidseitige Dichte-Darstellung, aber ohne die entlang der Achse gedruckten “Dichte”-Werte.
colour, fill oder shape)colour (alle Diagramme) und shape (Scatterplot) verwendet hat, um species oder sex zusätzlich zu dem zu visualisieren, was entlang der x- und y-Achse abgebildet wurdeflipper_length_mm (x-Achse), body_mass_g (y-Achse), species (Farbe), island (Form)
facet_wrap()facet_wrap()
facet_wrap() in drei Panels zu unterteilen, und zwar nach island.facet_wrap() als Argument(e) annehmen?
facet_grid()
facet_wrap() ist verwandt mit facet_grid(), das zwei kategoriale Variablen, eine in Spalten und eine in Zeilen, annehmen kann. Das Argument für facet_grid() ist eine Gleichung: row~column. Wenn wir also facet_grid(sex~island) zu unserem Diagramm hinzufügen, sollten wir die Daten in Diagrammen sehen, die nach sex in Zeilen (eine Zeile für female, eine Zeile für male) und nach island in Spalten (eine Spalte für jedes island) gruppiert sind.
df_penguins (body mass by sex)Whisker length
Die Whisker können so lang sein wie Q3+(IQR*1,5) und Q1-(IQR*1,5), enden aber an der letzten Beobachtung, die in diesen Bereich fällt. Betrachten wir beispielsweise Abbildung 9: Wenn die Whisker das 1,5-fache des IQR sein sollen, müssten sie länger sein als die Box, aber das scheinen sie nicht zu sein. Woran liegt das? Konzentrieren wir uns auf den unteren Whisker für weibliche Pinguine (den unteren linken Whisker). Er sollte nur so weit nach unten reichen wie die niedrigste Beobachtung innerhalb des Bereichs von Q1 minus IQR*1,5, aber was sind diese Werte? Berechnen wir mit R Q1, Q3, IQR, den oberen und unteren Bereich, den die Whisker haben können (also die Höchst-/Minimalwerte, die die Whisker haben können), und schließlich den Mindestwert einer Beobachtung innerhalb dieses Bereichs (also die Mindestwerte, die der untere Whisker haben wird).
body_mass_g
Min. :2700
1st Qu.:3350
Median :3650
Mean :3862
3rd Qu.:4550
Max. :5200
Image source: Winter (2019) (all rights reserved)
Oder, anders ausgedrückt:
Image source: Wickham et al. (o. J.) (all rights reserved)
geom_boxplot()geom_boxplot() erstellengeom_boxplot()geom_boxplot()?
body_mass_g), 1 kategorisch (species)colour oder fill ästhetisch zuordnengeom_point()
geom_errorbar()
df_penguins (body mass by sex)Errorbars: standard deviation
In wissenschaftlichen Veröffentlichungen stehen sie in der Regel für Konfidenzintervalle (EN: confience intervals), Standardfehler (EN: standard error) oder glaubwürdige Intervalle (in der Bayes-Statistik; EN: credible interval), die eine Inferenzstatistik darstellen, die, einfach ausgedrückt, versucht, Ergebnisse aus einer Stichprobenpopulation auf die Population als Ganzes zu verallgemeinern. In diesem Kurs werden wir uns auf die Standardabweichung beschränken, da wir nur versuchen, etwas über die uns vorliegenden Daten zu sagen.
Aus diesem Grund sollten wir immer angeben, was unsere Fehlerbalken darstellen, z. B. indem wir “(w/ +/-1SD)” in den Titel oder die Beschriftung der Grafik aufnehmen.
body_mass_g nach species und sex
species und sex berechnen?| species | sex | mean | sd | N |
|---|---|---|---|---|
| Adelie | female | 3368.836 | 269.3801 | 73 |
| Adelie | male | 4043.493 | 346.8116 | 73 |
| Chinstrap | female | 3527.206 | 285.3339 | 34 |
| Chinstrap | male | 3938.971 | 362.1376 | 34 |
| Gentoo | female | 4679.741 | 281.5783 | 58 |
| Gentoo | male | 5484.836 | 313.1586 | 61 |
ggplot2 einspeisen
knitr und kableExtra!!!!# Create new object with summaries
sum_penguins <- df_penguins %>%
summarise(mean = mean(body_mass_g),
sd = sd(body_mass_g),
upper = mean+sd,
lower = mean-sd,
N = n(),
.by = c(species,sex)) %>%
arrange(species, sex)
# Feed new object into ggplot
sum_penguins %>%
ggplot(aes(x = sex, y = mean, colour = species)) geom_point()
wir tun dies mit geom_errorbar()
wir müssen die Abbildungsästhetik für die oberen und unteren Grenzen des Fehlerbalkens hinzufügen
geom_errorbar(aes(ymin = mean-sd, ymax = mean+sd))mean-sd (lower) und mean+sd (upper) für jede Gruppe zu berechnen.| species | sex | mean | sd | upper | lower | N |
|---|---|---|---|---|---|---|
| Adelie | female | 3368.836 | 269.3801 | 3638.216 | 3099.456 | 73 |
| Adelie | male | 4043.493 | 346.8116 | 4390.305 | 3696.682 | 73 |
| Chinstrap | female | 3527.206 | 285.3339 | 3812.540 | 3241.872 | 34 |
| Chinstrap | male | 3938.971 | 362.1376 | 4301.108 | 3576.833 | 34 |
| Gentoo | female | 4679.741 | 281.5783 | 4961.320 | 4398.163 | 58 |
| Gentoo | male | 5484.836 | 313.1586 | 5797.995 | 5171.677 | 61 |
Balkendiagramm des Mittelwerts: Finger weg!
Ich flehe Sie an, nicht Mittelwerte mit Fehlerbalken darzustellen! Sie werden sehr oft Balkendiagramme von Mittelwerten sehen, und andere unterrichten dies vielleicht sogar in anderen Kursen, aber es gibt viele Gründe, warum dies eine schlechte Idee ist!!!
Erstens können sie sehr irreführend sein. Sie beginnen bei 0 und vermitteln den Eindruck, dass die Daten beim Mittelwert enden, obwohl etwa die Hälfte der Daten (normalerweise) über dem Mittelwert liegt.
datasauRus, das Datensätze mit ähnlichen Mittelwerten, Standardabweichungen und Anzahl der Beobachtungen enthält
x und y
position = posiiton_dodge(0.3) sagt ggplot2 wie Objekte zu positionieren sind
position_dodge() bedeutet: überlappende Objekte horizontal verschiebenposition_dodge() für jedes Geom_ verwenden, das sich an der gleichen Stelle und mit dem gleichen Wert befinden soll, sonst werden sie nicht ausgerichtetgeom_point(size = 3): passt die Größe der Punkte angeom_errorbar(width = .3): passt die Breite der Fehlerbalken an
position_dodge() und geom_errorbar(width = ) ein, so dass die Fehlerbalken immer die ‘mittlere’ Linie berühren (probieren Sie, beide Werte zu ändern, um zu sehen, was ich meine)scale_colour_colorblind(): verwendet ein farbenblindenfreundliches Farbschematheme_minimal(): räumt die Darstellung auf (wir haben auch theme_bw() gesehen, mehr über Themes hier)Geom hinzugeom_point() mit den erforderlichen data und aes() verwendensum_penguins %>%
ggplot(aes(x = species, y = mean,
colour = sex, shape = sex)) +
geom_point(data = df_penguins,
aes(x = species, y = body_mass_g)) +
geom_point(position = position_dodge(0.3),
size = 3) +
geom_errorbar(aes(ymin=lower,ymax=upper),
position = position_dodge(0.3),
width = .3) +
scale_colour_colorblind() +
theme_minimal()position_dodge()
sum_penguins %>%
ggplot(aes(x = species, y = mean,
colour = sex, shape = sex)) +
geom_point(data = df_penguins,
aes(x = species, y = body_mass_g),
position = position_dodge(0.3)) +
geom_point(position = position_dodge(0.3),
size = 3) +
geom_errorbar(aes(ymin=lower,ymax=upper),
position = position_dodge(0.3),
width = .3) +
scale_colour_colorblind() +
theme_minimal()alpha hinzufügensum_penguins %>%
ggplot(aes(x = species, y = mean,
colour = sex, shape = sex)) +
geom_point(data = df_penguins,
aes(x = species, y = body_mass_g),
position = position_dodge(0.3),
alpha = .4) +
geom_point(position = position_dodge(0.3),
size = 3) +
geom_errorbar(aes(ymin=lower,ymax=upper),
position = position_dodge(0.3),
width = .3) +
scale_colour_colorblind() +
theme_minimal()position_jitterdodge() verschiebt Objekte so, dass sie sich nicht überlappen
dodge.width = .3 setzen, um position_dodge() von errorbars zu entsprechenjitter.width = um anzugeben, wie stark die Punkte zittern sollengeom_errorbar(size = 1) macht die Linien der Fehlerbalken dickersum_penguins %>%
ggplot(aes(x = species, y = mean,
colour = sex, shape = sex)) +
geom_point(data = df_penguins,
aes(y = body_mass_g),
position = position_jitterdodge(dodge.width = .3,
jitter.width = 0.3),
alpha = .4) +
geom_point(position = position_dodge(width =0.3),
size = 3) +
geom_errorbar(aes(ymin=lower,ymax=upper),
position = position_dodge(0.3),
width = .3,
size = 1) +
scale_colour_colorblind() +
theme_minimal()Heute haben wir gelernt, wie man…
facet_wrap() darstellt ✅df_penguins Daten, mit:
Theme_-Einstellung (z.B. theme_bw(); für weitere Optionen siehe hier)fig-...) und eine Überschrift (fig-cap:) hinzu. Beschreiben Sie die Grafik kurz und verwenden Sie einen Querverweis (@fig-... zeigt, dass…).geom_ und einige Beschriftungen hinzufügen (und ein paar Formatierungsanpassungen, wenn Sie wollen, dass es genau so aussieht).Abbildung 18: A multi-layered plot
patchwork (siehe Anmerkungen zu Woche 3) und stellen Sie Ihren Boxplot und Ihre Fehlerbalken/Violin-Plots nebeneinander dar. Es sollte ungefähr so aussehen wie Abbildung 19.
+ plot_annotation(tag_level = "A") aus patchwork hinzufügen.Abbildung 19: Combined plots with patchwork
Hergestellt mit R version 4.3.0 (2023-04-21) (Already Tomorrow) und RStudioversion 2023.3.0.386 (Cherry Blossom).
R version 4.3.0 (2023-04-21)
Platform: aarch64-apple-darwin20 (64-bit)
Running under: macOS Ventura 13.2.1
Matrix products: default
BLAS: /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRblas.0.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRlapack.dylib; LAPACK version 3.11.0
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] magick_2.7.4 patchwork_1.1.2 ggthemes_4.2.4
[4] palmerpenguins_0.1.1 lubridate_1.9.2 forcats_1.0.0
[7] stringr_1.5.0 dplyr_1.1.2 purrr_1.0.1
[10] readr_2.1.4 tidyr_1.3.0 tibble_3.2.1
[13] ggplot2_3.4.2 tidyverse_2.0.0
loaded via a namespace (and not attached):
[1] utf8_1.2.3 generics_0.1.3 xml2_1.3.4
[4] stringi_1.7.12 hms_1.1.3 digest_0.6.31
[7] magrittr_2.0.3 evaluate_0.21 grid_4.3.0
[10] timechange_0.2.0 fastmap_1.1.1 rprojroot_2.0.3
[13] jsonlite_1.8.5 httr_1.4.6 rvest_1.0.3
[16] fansi_1.0.4 viridisLite_0.4.2 scales_1.2.1
[19] cli_3.6.1 rlang_1.1.1 munsell_0.5.0
[22] withr_2.5.0 yaml_2.3.7 tools_4.3.0
[25] tzdb_0.4.0 colorspace_2.1-0 webshot_0.5.4
[28] pacman_0.5.1 here_1.0.1 kableExtra_1.3.4.9000
[31] png_0.1-8 vctrs_0.6.2 R6_2.5.1
[34] lifecycle_1.0.3 pkgconfig_2.0.3 pillar_1.9.0
[37] gtable_0.3.3 glue_1.6.2 Rcpp_1.0.10
[40] systemfonts_1.0.4 highr_0.10 xfun_0.39
[43] tidyselect_1.2.0 rstudioapi_0.14 knitr_1.43
[46] farver_2.1.1 datasauRus_0.1.6 htmltools_0.5.5
[49] svglite_2.1.1 rmarkdown_2.22 labeling_0.4.2
[52] compiler_4.3.0
Woche 10 - Datenvisualisierung 2